package com.ruoyi.workflow.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.flowable.core.FormConf;
import com.ruoyi.flowable.core.domain.ProcessQuery;
import com.ruoyi.workflow.domain.vo.WfDefinitionVo;
import com.ruoyi.workflow.domain.vo.WfDeployVo;
import com.ruoyi.workflow.domain.vo.WfTaskVo;

import java.util.Map;


public interface IWfProcessService  {

    /**
     * 查询可发起流程列表
     * @param processQuery
     * @param pageQuery 分页参数
     * @return
     */
    TableDataInfo<WfDefinitionVo> selectPageStartProcessList(ProcessQuery processQuery, PageQuery pageQuery);

    /**
     * 查询流程部署关联表单信息
     * @param definitionId 流程定义ID
     * @param deployId  部署ID
     * @return
     */
    FormConf selectFormContent(String definitionId,String deployId,String procInsId);

    void startProcessByDefId(String procDefId, Map<String,Object> variables);


    /**
     * 查询我的流程
     * @param processQuery
     * @param pageQuery 分页参数
     * @return
     */
    TableDataInfo<WfTaskVo> selectPageOwnProcessList(ProcessQuery processQuery,PageQuery pageQuery);


    /**
     * 删除流程实例
     */
    void deleteProcessByIds(String[] instanceIds);

    /**
     * 查询待办任务列表
     * @param processQuery
     * @param pageQuery 分页参数
     * @return
     */
    TableDataInfo<WfTaskVo> selectPageTodoProcessList(ProcessQuery processQuery,PageQuery pageQuery);

    /**
     * 查询流程任务信息
     * @param procInsId 流程实例ID
     * @param taskId 任务ID
     * @return
     */
    WfDeployVo queryProcessDetail(String procInsId,String taskId);
}
